/*
 * @features: 功能
 * @description: 说明
 * @Date: 2021-09-13 23:52:25
 * @Author: judu233(769471424@qq.com)
 * @LastEditTime: 2021-09-13 23:52:43
 * @LastEditors: judu233
 */
// /*
//  * @features: 游戏主内容节点自适应所有分辨率的脚本
//  * @description: 内容说明
//  * 
//  *
//  * 用法：
//  *      1. 将本组件挂载在节点上即可
//  *      2.子节点如果有需要贴边的直接挂Widget组件
//  * 适配原理：
//  *      1. 将游戏主内容节点的宽高调整为画布的大小，以进行Size适配
//  *
//  * 注意：
//  *      1. 挂载这个脚本的节点不能加入Widget组件，不然这个适配是没有效果的
//  *      2. 目前只支持 SHOW_ALL 模式下的背景缩放适配，不支持其他模式的背景缩放
//  *  @example
//  *  ```
//  *  // e.g.
//  *  // 代码中设置 SHOW_ALL 模式的参考代码
//  *  cc.view.setDesignResolutionSize(720, 1280, cc.ResolutionPolicy.SHOW_ALL);
//  *  // 或者 Canvas 组件中，同时勾选 Fit Width 和 Fit Height 
//  *  ```
//  * @Date: 2021-06-03 13:58:57
//  * @Author: judu233(769471424@qq.com)
//  * @LastEditTime: 2021-06-30 14:15:25
//  * @LastEditors: judu233
//  */

// const { ccclass, property } = cc._decorator;
// @ccclass
// export default class ContentAdapter extends cc.Component {
//     @property({ displayName: `调试` })
//     debug = false;

//     onLoad() {
//         if (this.debug && CC_DEBUG) {
//             log("调整前");
//             log(`屏幕分辨率: ${cc.view.getCanvasSize().width} x ${cc.view.getCanvasSize().height}`);
//             log(`视图窗口可见区域分辨率: ${cc.view.getVisibleSize().width} x ${cc.view.getVisibleSize().height}`);
//             log(`视图中边框尺寸: ${cc.view.getFrameSize().width} x ${cc.view.getFrameSize().height}`);
//             log(`设备或浏览器像素比例: ${cc.view.getDevicePixelRatio()}`);
//             log(`节点宽高: ${this.node.width} x ${this.node.height}`);
//         }

//         // 1. 先找到 SHOW_ALL 模式适配之后，本节点的实际宽高以及初始缩放值
//         let srcScaleForShowAll = Math.min(cc.view.getCanvasSize().width / this.node.width, cc.view.getCanvasSize().height / this.node.height);
//         let realWidth = this.node.width * srcScaleForShowAll;
//         let realHeight = this.node.height * srcScaleForShowAll;

//         // 2. 基于第一步的数据，再做节点宽高适配
//         this.node.width = this.node.width * (cc.view.getCanvasSize().width / realWidth);
//         this.node.height = this.node.height * (cc.view.getCanvasSize().height / realHeight);

//         // 3. 因为本节点的宽高发生了改变，所以要手动更新剩下子节点的宽高
//         // this._updateAllChildNodeWidget(this.node);

//         if (this.debug && CC_DEBUG) {
//             log(`节点在SHOW_ALL模式下展示的宽高: ${realWidth} x ${realHeight}`);
//             log(`节点在SHOW_ALL模式下展示的缩放: ${srcScaleForShowAll}`);
//             log(
//                 `节点在SHOW_ALL模式下做全屏处理后的实际宽高（${cc.view.getCanvasSize().width}x${cc.view.getCanvasSize().height
//                 }）等价于于原节点的宽高(${this.node.width}x${this.node.height})`
//             );
//         }
//     }

//     /**
//      * 更新指定节点的子节点中包含weight组件的节点
//      * @param parentNode 节点
//      * @returns 
//      */
//     private _updateAllChildNodeWidget(parentNode: cc.Node) {
//         if (parentNode == null) {
//             return;
//         }
//         let widget = parentNode.getComponent(cc.Widget);
//         if (widget != null) {
//             widget.updateAlignment();
//         }
//         if (parentNode.childrenCount == 0) {
//             return;
//         }
//         parentNode.children.forEach((childNode: cc.Node) => {
//             this._updateAllChildNodeWidget(childNode);
//         });
//     }
// }
